package com.maxlen.camunda.service;

import com.maxlen.camunda.entity.BpmnEntity;
import com.maxlen.camunda.entity.dto.CountByBpmnIdDTO;
import com.maxlen.camunda.entity.dto.InsertBpmnDTO;
import com.maxlen.camunda.entity.dto.UpdateBpmnDTO;
import com.maxlen.camunda.entity.vo.BpmnInfoVO;
import com.tcloudit.common.core.web.domain.PageEntity;
import com.tcloudit.common.core.web.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;

public interface BpmnService {

    /**
     * 添加流程模型
     * @param insertBpmnDTO 参数
     * @return 结果
     */
    int insertProcessBpmn(InsertBpmnDTO insertBpmnDTO);

    /**
     * 修改流程模型
     * @param updateBpmnDTO 参数
     * @return 结果
     */
    int updateProcessBpmn(UpdateBpmnDTO updateBpmnDTO);

    /**
     * 删除流程模型
     * @param ids 模型ID集合
     * @return 结果
     */
    int deleteProcessBpmn(String[] ids);

    /**
     * 获取流程模型列表
     * @param page 分页搜索参数
     * @return 结果
     */
    TableDataInfo selectProcessBpmn(PageEntity<String> page);

    /**
     * 获取流程模型详情
     * @param id 流程模型ID
     * @return 结果
     */
    BpmnInfoVO selectProcessBpmnInfo(String id);

    /**
     * 检查模型标识是否唯一
     * @param bpmnId 模型标识
     * @return 结果
     */
    String checkBpmnIdUnique(String bpmnId);

    /**
     * 根据id获取模型文件
     * @param bpmnId 模型标识
     * @return 结果
     */
    String getBpmnFile(String bpmnId) throws Throwable;

    /**
     * 根据 id 保存修改模型文件
     * @param file xml文件
     * @param bpmnId 模型标识
     */
    void saveBpmn(MultipartFile file, String bpmnId);
}
